package com.ruoyi.robot.controller;

import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.robot.pojo.po.Robot;
import com.ruoyi.robot.pojo.dto.RobotDto;
import com.ruoyi.robot.pojo.po.RobotMes;
import com.ruoyi.robot.pojo.po.RobotParameter;
import com.ruoyi.robot.service.RobotService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 * 机器人信息前端控制器
 * </p>
 *
 * @author yid
 * @since 2023-01-16
 */
@Api(tags = "机器人信息接口")
@RestController
@RequestMapping("/robot/robot")
public class RobotController extends BaseController {

    private final RobotService robotService;

    @Autowired
    public RobotController(RobotService robotService) {
        this.robotService = robotService;
    }

    /**
     * 查询机器人信息列表
     */
    @ApiOperation("查询机器人信息列表")
    @GetMapping("/list")
    public TableDataInfo list(RobotDto robotDto) {
        startPage();
        List<Robot> list = robotService.selectRobotList(robotDto);
        return getDataTable(list);
    }

    /**
     * 导出机器人信息列表
     */
    @ApiOperation("导出机器人信息列表")
    @PostMapping("/export")
    public void export(HttpServletResponse response, RobotDto robotDto) {
        List<Robot> list = robotService.selectRobotList(robotDto);
        ExcelUtil<Robot> util = new ExcelUtil<Robot>(Robot.class);
        util.exportExcel(response, list, "机器人信息数据");
    }

    /**
     * 获取机器人信息详细信息
     */
    @ApiOperation("获取单个机器人信息")
    @GetMapping(value = "/{productId}")
    public AjaxResult getInfo(@PathVariable("productId") Long productId) {
        return success(robotService.selectRobotByProductId(productId));
    }

    /**
     * 新增机器人信息
     */
    @ApiOperation("新增机器人信息")
    @PostMapping
    public AjaxResult add(@Validated @RequestBody RobotDto robotDto) {
        return robotService.insertRobot(robotDto);
    }

    /**
     * 修改机器人信息
     */
    @ApiOperation("修改机器人信息")
    @PutMapping
    public AjaxResult edit(@RequestBody RobotDto robotDto) {
        return toAjax(robotService.updateRobot(robotDto));
    }

    /**
     * 删除机器人信息
     */
    @ApiOperation("删除机器人信息")
    @DeleteMapping("/{productIds}")
    public AjaxResult remove(@PathVariable Long[] productIds) {
        return toAjax(robotService.deleteRobotByProductIds(productIds));
    }

}